home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Turnbull China Bikeride
/
Turnbull China Bikeride - Disc 2.iso
/
STUTTGART
/
LANG
/
SCHEME
/
VSCM
/
doc
/
README
< prev
Wrap
Text File
|
1994-08-05
|
3KB
|
98 lines
-- see INSTALL for instructions on how to build VSCM
-- see DESCRIPTION for a desription of the non-R4RS features and for a
list of changes made since September 29, 1993
______________________________________________________________________________
VSCM -- A portable Scheme implementation
Author: Matthias Blume
Princeton University
Department of Computer Science
35 Olden Street
Princeton, NJ 08544, U.S.A.
e-mail: blume@cs.princeton.edu
This is VSCM, a complete and portable implementation of Scheme
according to R4RS (The ``Revised revised revised revised Report of the
Algorithmic Language Scheme'').
VSCM is based on a virtual machine written in ANSI C and on a
bytecode-compiler written in Scheme itself.
This version of VSCM is distinguished from its predecessor (VSCM I) by the
following properties:
* All essential and non-essential features mentioned in R4RS plus
some important extras are provided.
* VSCM is now based on a somewhat more flexible virtual machine
which allows more compiler optimizations.
* The compiler now uses a flat closure representation. (The previous
implementation was restricted to linked closures.)
* VSCM now offers the complete tower of numeric types as proposed in
R4RS (integer, rational, real and complex). The numeric code
has been completely redesigned.
* Execution is 20-40% faster on average programs. For certain
cases improvements of more than 50% could be observed.
* The implementation is cleaned up in several ways.
Non-standard features include:
* (executable) protable memory images
* error handling
* interrupt handling
* coroutines
* timer interrupts
* generic ports
* continuations with multiple arguments (will be in R5RS)
* interfaces to runtime system, garbage collector,
operating system
For a more complete list and description see file DESCRIPTION.
This version of VSCM is based on its first implementation that has
been developed in part while the author was working at the department
of Computer Science, Humboldt-University of Berlin, Germany. The most
recent version of the first implementation can be obtained via
anonymous ftp from ``nexus.yorku.ca:/pub/scheme/imp/vscm93Feb10.tar.Z''.
______________
Remarks:
Even though VSCM implements integral, rational, real and complex
numeric types and distinguishes between exact and inexact numbers you
can find ``holes'' in the type system: there are no non-integral
inexact fractions and no exact non-integral real or complex numbers.
Inexact fractions are converted to real numbers. Usually there is no
problem with this. However, the results of ``rationalize'' can be
surprising.
``rationalize'' must return an inexact fraction if called with
real numbers, because real numbers are always inexact. But since we
don't have inexact fractions we get another real number instead. To
get the expected result you will need to call:
(rationalize (inexact->exact <x>) (inexact->exact <y>))
I'm indebted to Alan Bawden for allowing me to use his version of
``rationalize''.
VSCM still lacks a real implementation of ``char-ready?''. This is
due to the fact that ANSI C does not allow to implement it in a
portable machine- and operating system-independent way.
______________
I also want to thank Henry Cejtin for numerous suggestions and Greg Wilson
for pushing me to include the coroutine interface.
Princeton, March 23, 1993
September 29, 1993
November 18, 1993